<?php
/**
* @version	1.0 msTableProducent.php marum56
* @package	Joomla.Framework
* @subpackage	Table
* @copyright	Copyright (C) 2011 All rights reserved.
* @license	
*/

// Check to ensure this file is within the rest of the framework
defined('JPATH_BASE') or die();

/**
 * Producent table
 *
 * @package 	Joomla.Framework
 * @subpackage	Table
 * @since	1.0
 */
class msTableModel extends JTable
{
	/**
	 * Unique id
	 *
	 * @var int
	 */
	var $id				= null;

	/**
	 * Numer modelu
	 *
	 * @var int
	 */
	var $nrm				= null;

	/**
	 * Nazwa modelu
	 * @var string
	 */
	var $n_mod			= null;
	
	/**
	 * Typ urządzenia
	 * @var string
	 */
	var $typ_urzadz			= null;
	
	/**
	 * Nazwa producenta
	 *
	 * @var string
	 */
	var $n_prod			= null;
	
	/**
	 * Notatka o modelu
	 *
	 * @var string
	 */
	var $nota			= null;
		
	/**
	 * Znacznik usuniecia
	 *
	 * @var int
	 */
	var $del				= null;
	
	/**
	 * Description
	 * @var datetime
	 */
	var $registerDate	= null;
	
	/**
	 * Nazwa usera, który rejestrował/wyrejestrował model..
	 * @var string
	 */
	var $whoRegister	= null;
	
	
	/**
	* @param database A database connector object
	*/
	function __construct( &$db )
	{
		parent::__construct( '#__modele', 'id', $db );

		//initialise
		$this->id        = 0;
	}
	
	/** 
	 * Porownanie wlasciwosci dwoch obiektow.
	 *
	 * @return int -1 blad odczytu tabeli
	 *              0 obiekty nie rowne
	 *              1 obiekty rowne
	 */
	function compareObjects()
	{	
		// Nowa tabela
		unset($this->whoRegister);
		unset($this->registerDate);
		$newTable = $this->getProperties();

/*		global $mainframe;
		$i = 1;
		$mm = 'nowy</br>';
		foreach ($newTable as $k => $v)
		{
			$mm .= $i++.') ['.$k.'] ='.$v.'</br>';	
		}
		$mainframe->enqueueMessage($mm, 'message');
*/		
		// Stara tabela
		$oldObject =& new $this(JFactory::getDBO());
		if(!$oldObject->load($this->id)) {
			JError::raiseWarning( 'SOME_ERROR_CODE', 'JUser::save: Unable to load user with id: '.$this->id );
			return -1;
		}		

		unset($oldObject->whoRegister);
		unset($oldObject->registerDate);
		$oldTable = $oldObject->getProperties();
/*		$i = 1;
		$mm = 'stary</br>';
		foreach ($oldTable as $k => $v)
		{
			$mm .= $i++.') ['.$k.'] ='.$v.'</br>';	
		}
		$mainframe->enqueueMessage($mm, 'message');
*/		
		foreach ($newTable as $k => $v) 
		{ 
			if ($v != $oldTable[$k]) {
				return 0;
			}
		}
		return 1;
	}	

	/**
	 * Dodaje rekord do tablicy BD
	 *
	 * @param	int $isEqualObjects Czy dodac rekord - domyslnie dodaje.
	 * @return	boolean	True if successful
	 */
	function store( $isEqualObjects=0 )
	{
		$ret = true;

		if (!$isEqualObjects) {
			$this->id = 0;  // Aby mogl zostac zapisany stary user czyli nastepny rekord
			// new record
			$ret = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key);		
		}

		if (!$ret) {
			$this->setError( get_class($this).'::store(): Zapis do BD nieudany' . '<br />' . $this->_db->getErrorMsg() );
			return false;
		}
		else {
			return true;
		}
	}	

	/**
	 * Validation and filtering
	 *
	 * @return boolean True is satisfactory
	 */
	function check()
	{	
		// Sprawdz czy istnieje już ta nazwa dla rekordów nie usunietych (del=0)    
		$query = 'SELECT id'
		. ' FROM #__modele AS a '
		. ' WHERE n_mod = ' . $this->_db->Quote($this->n_mod)
		. ' AND id != '. (int) $this->id
		. ' AND del = 0'       
		. ' AND a.registerDate = (SELECT max(registerDate) 
		                              FROM #__modele
		                              WHERE nrm = a.nrm)'	
		;
		$this->_db->setQuery( $query );
		$xid = intval( $this->_db->loadResult() );
		
		if ($xid && $xid != intval( $this->id )) {
			$this->setError(  JText::_('Model o tej nazwie już istnieje.'));
			return false;
		}

		return true;
	}


	/**
	 * Dodaje rekord do tablicy BD z polem del ustawionym,
	 * oznacza to wirtualne usunięcie danego rekordu ( no display )
	 *
	 * @param	int 	$oid id rekordu do usunięcie
	 * @return 	boolean True is satisfactory
	 */
	function delete( $oid=null )
	{
		$this->id = 0;  // Aby mogl zostac zapisany nastepny rekord
		$this->del = 1; // Wirtualne usunięcie

		// new record
		$ret = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key);

		if ($ret) {
			// Usunięcie pomyslnie.
			// Tutaj mozna usuwac ewentualnie rekordy z innych tabel. 
			return true;
		} else {
			$this->setError( get_class($this).'::delete(): Zapis do BD nieudany' . '<br />' . $this->_db->getErrorMsg() );
			return false;
		}
	}

}
